package com.tmxk.api.days01.yangl.list;

import com.tmxk.api.days01.yangl.Dog;

import java.util.LinkedList;

/**
 * @BelongsProject: java-api
 * @BelongsPackage: com.tmxk.api.days01.yangl
 * @Author: YangLei
 * @CreateTime: 2022-11-28  15:34
 * @Description: TODO
 * @Version: 1.0
 */
public class LinkedListDemo3_Generic {
    public static void main(String[] args) {
        // 需求1:  使用ArrayList集合对象 添加 5 个 Dog对象
        // dog1  小花   2
        // dog2  花花   3
        // dog3  小黑   1
        // dog4  小白   5
        // dog5  汪汪   6
        LinkedList<Dog> linkedList = new LinkedList<>();
        Dog dog1 = new Dog("小花", 2);
        linkedList.add(dog1);
        linkedList.add(dog1);
        linkedList.add(new Dog("花花", 3));
        linkedList.add(new Dog("小黑", 1));
        linkedList.add(new Dog("小白", 5));
        linkedList.add(new Dog("汪汪", 6));
        linkedList.add(dog1);

        // 需求2:  获取第三个下标元素的狗狗对象
        Dog dog = linkedList.get(2);
        System.out.println("获取第三个下标元素的狗狗对象:" + dog);
        //需求3: 查找是否存在 汪汪 这个集合元素
        //System.out.println("查找汪汪 是否包含在该集合元素中:" + linkedList.contains("汪汪")) ;
        // 定义一个标识符,用来标识定义的元素是否存在,默认false 不存在
        boolean flag = false;
        for (Dog d : linkedList) {
            // String str = "汪汪".equals(d.getName()) == true ? "包含在该集合元素中" : "不包含在该集合元素中";
            if ("汪汪".equals(d.getName())) {
                flag = true;
                break;
            }
        }
        System.out.println(flag == true ? "包含在该集合元素中" : "不包含在该集合元素中");

        //需求4: 删除 花花
        // 定义一个标识符,用来标识是否成功删除该集合元素,默认定义false,未删除成功
        boolean isRemove = false;
        for (int i = 0; i < linkedList.size(); i++) {
            Dog d = linkedList.get(i);
            if ("花花".equals(d.getName())) {
                isRemove = linkedList.remove(d);
            }
        }
        System.out.println(isRemove == true ? "删除花花成功!" : "删除花花失败");

        linkedList.addFirst(new Dog("小金毛", 2));
        linkedList.addLast(new Dog("小金", 2));

        //需求5: 循环遍历该集合元素
        System.out.println("\n循环遍历该集合元素");
        for (int i = 0; i < linkedList.size(); i++) {
            System.out.println(linkedList.get(i).getName() + "\t" + linkedList.get(i).getAge());
        }

        // 快速删除首行、尾行数据
        linkedList.removeFirst();
        linkedList.removeLast();

        System.out.println("循环遍历方式三   lambda表达式");
        linkedList.forEach(d -> {
            System.out.println(d);
        });

    }
}
